草庐IT

Android GoogleMap 或 SupportMapFragment - 空指针异常

全部标签

php - 在 PHP 中使用异常的正确方法是什么?

我一直使用“返回状态代码”方法来管理错误。看来异常是当今管理错误的最佳方式。但它们真的是最好的方法吗?我读过像exceptionsareworstthanGoTo这样的东西你知道一些关于异常和错误管理的好文章/帖子/书籍吗? 最佳答案 如果您编写面向对象的程序,也许异常更适合您。如果您编写过程,返回值是更好的方法。这取决于您的编码风格等。 关于php-在PHP中使用异常的正确方法是什么?,我们在StackOverflow上找到一个类似的问题: https://

PHP 异常 - 是否需要 try/catch?

我开始使用“真正的”异常而不是自定义错误函数。我认为我不需要每次都使用try/catch-block,抛出一个异常也没关系,但现在由于这些未捕获的异常,我得到了一个fatalerror。当我设置error_reporting(0)时一切正常,但我想完全避免错误。有谁知道try/catch的替代方法或如何抛出异常而不会出现fatalerror?提前致谢! 最佳答案 您可以使用set_exception_handler()为此并自己处理任何未捕获的异常。您注册的回调将接收异常作为其第一个也是唯一的参数。然而,注册一个虚拟函数是可能的:在

javascript - PHP转JS密码加密算法抛异常

下面是我必须用于我正在构建的控制面板的密码哈希算法。原始函数在PHP中,但我正在重写它以便在JavaScript中与Node.js一起使用。一切似乎都很顺利,但随后我调用了fMod并发生了崩溃:RangeError:toFixed()digitsargumentmustbebetween0and20尽管使用其他值,fmod函数似乎也能正常工作。我在fMod中标记了抛出异常的行。密码的正确哈希值应该是:0x31c7296631df873d0891b7b77ae0c6c6代码://JavaScriptVersionvarpass="Cake99";console.log(pCrypt2(p

php - 重新抛出部分捕获的异常?

我的代码预计在插入远程数据库时偶尔会出现唯一索引冲突。无法避免违规,因为我需要一个随机生成但人类可读的值。不幸的是,当这种情况发生时,PDO只是抛出一个通用的PDOException,所以我有一个包含这种可憎的循环:do{...}catch(PDOException$e){if($e->getCode()==='23000'){continue;//haveanothergo}else{thrownewException("...",1,$e);//reraise}}while(therewasanexception);我认为错误捕获会比搜索然后插入更好,因为使用四位数代码并且任何时候

php - Laravel 错误:方法 Illuminate\View\View::__toString() 不能抛出异常

我正在使用larval4.2,我的wrapper.phpView文件中出现以下错误:with('sidebar',$sidebar)->with('active',$active);?>错误:Error:MethodIlluminate\View\View::__toString()mustnotthrowanexception你知道是什么原因造成的吗? 最佳答案 Laravel通过将Illuminate\View\View对象转换为字符串来呈现其View。如果对象被转换为字符串并设置了__toString方法,PHP将调用__to

PHP Uncaught exception 提供了比捕获的异常更多的细节

我构建了一些api端点,并尝试处理日志记录异常,因此我故意删除数据库并运行端点以获取PDOException。我的问题是,如果我没有捕获异常,当我通过postman运行端点时,它会向我显示更详细的消息、堆栈跟踪等(大约1000行),但是如果我用这样的trycatchblock捕获异常catch(\Exception$exception){print_r($exception->__toString());print_r("\n\n");die;}细节少了很多。这是为什么?无论如何打印我们没有捕获到异常时得到的相同数据? 最佳答案 您

php - 如何在 PHPUnit 中使用数据提供程序测试异常?

PHPUnit有一个非常有用的特性@dataProvider,这允许测试一个方法的多个案例。它还有另一个很酷的注释--@expectedException以确保应用程序在定义的位置抛出正确的Exception。我目前正在针对多种边缘情况测试一种方法,并想像这样结合这两个功能(不是工作代码):classTestMyClass{/***@dataProviderprovideDataForFoo*/publicfunctiontestFoo($paramBar,$paramBuz,$expected){$myObject=newMyClass();$this->assertEquals($

php - 禁止为 E_USER_WARNING 抛出异常

当我这样做时,Laravel返回500:trigger_error("Somemessage",E_USER_WARNING);我需要它不出错,但我确实希望它通过\App\Exceptions\Handler::report运行将警告记录到Sentry。如何禁用Laravel5.2将警告和错误转换为异常? 最佳答案 您可以编辑laravel的错误处理程序以仅在HandleExceptions.php中报告警告publicfunctionhandleError($level,$message,$file='',$line=0,$con

php - PHP 函数的返回值和异常

我正在阅读一些关于PHP的书籍(特别是Welling和Thomson合着的“PHP和MySQLWeb开发”),我也是一名应届本科生。我有点好奇为什么作者决定选择两种不同的方式来终止函数的执行,例如if(!$result){thrownewException('Passwordcouldnotbechanged.');}else{returntrue;}对我来说,这似乎有点不一致,返回false并让调用者检查被调用者的返回值并进行处理会更有意义。PHP代码是不是经常这样?这是使用异常时预期的样式类型吗? 最佳答案 是的,我同意这没有多

php - 我应该抛出不同的异常类型吗?

当故意抛出异常时,我总是只使用PHP的基本异常类,只是使用不同的消息,例如:$b){thrownewException('aislargerthanb');}但是,最近我注意到有些人会抛出不同类别的异常,例如:$b){thrownewaIsLargerThanBException();}这两种方法的优点/缺点是什么?我应该用第二种风格吗?我注意到,在使用PHPUnit进行单元测试时,您可以使用setExpectedException()告诉它您期望出现某一类异常。这是否意味着第二种方法在使代码可测试方面更好?谢谢! 最佳答案 这些不